1. Field of the Invention
The present invention relates to a network processor system and a network protocol processing method.
2. Description of the Related Art
Recent advances in network technology promote the wide use of Gigabit network so that the bandwidth of the network has remarkably expanded. On the other hand, it is a current status that the processing performance of a microprocessor that processes packets transmitted through the network has not improved as much as the network performance. Therefore it is difficult for the microprocessor to process the packet transmitted through a high-speed network at a sufficient speed. Particularly, the processing performance of the microprocessor will become a bottleneck for the network bandwidth when the bandwidth of the network exceeds around one Giga bit per second (Gbps).
There are the following three causes that the processing performance of the processor will become a bottleneck:                (1) transmission control protocol (TCP) processing;        (2) context switch; and        (3) memory-to-memory copy.        
The TCP processing as listed above is composed of some processes that require a large amount of computation such as checksum and retransmission, resulting in putting a heavy load on the processor. A TCP offload engine (TOE) is a technology to solve this problem. To employ this technology, a dedicated hardware for performing the processes in TCP is implemented in a network interface card (NIC). A network interface card in which such a TCP offload engine is implemented is called a TOE-NIC. In this case, a send/receive buffer will be provided inside the TOE-NIC.
The context switch as listed above occurs when the context for processing packets is switched between a user mode and a kernel mode. Since the context switch produces overhead, it will become a bottleneck for the overall processing performance. To solve this problem, an implementation technique has been researched such as a kernel bypass in which the protocol processing by a kernel is skipped.
The memory-to-memory copy as listed above occurs when data of a packet is copied between a plurality of memories in the course of the packet processing. First, the network interface card writes a received packet to a buffer of the kernel. The CPU analyzes the packet stored in the buffer of the kernel and then writes it to a buffer of an application. In the course of this processing, the data of the packet is copied from the kernel buffer to the application buffer. This memory-to-memory copy produces some overhead.
A technique called a remote direct memory access (RDMA) has been implemented to solve the problem when the memory-to-memory copy occurs. Direct memory access (DMA) is a method for directly transferring data between various types of devices and a random access memory (RAM). The RDMA extends this DMA functionality across a network. The RDMA allows the data to directly move from a memory in one computer to a memory in another computer, resulting in reducing the CPU overhead. In the case of a TCP/IP network, a RDMA-enabled NIC (RNIC) is necessary to utilize the RDMA. In general, the RNIC is a network interface card that has both TOE and RDMA functionalities.
It is an important issue for improving the efficiency of communication how to reduce a processing load on the microprocessor so as to cope with the network operating at an increasingly higher speed in the future. The above-mentioned RDMA is one of the solutions for this problem. However, in order to utilize the RDMA, a dedicated network interface card conforming to RDMA, or RNIC is needed. The conventional network interface cards that have been used in a normal situation are useless to utilize the RDMA. It costs a lot to replace all existing NICs by RNICs conforming to RDMA. This is a cause that the spread of the RDMA technology has been delayed.
Furthermore, if only a part of network interface cards are replaced by RDMA-enabled cards and the network is configured in such a manner that the conventional NICs and the RNICs coexist, another problem might occur in which the communication between the conventional NICs and the RNICs becomes impossible.